#ifndef GLOBALS_H
#define GLOBALS_H

#include <atomic>
#include <chrono>
#include <mutex>
#include <vector>
#include "Config.h"
#include "../AscDeepFileRT/DeepCMP_RT.h"
enum ButtonState {
    IDLE,           // 空闲状态
    PRESSED,        // 已按下
    LONG_PRESSED    // 长按已触发
};
// 声明从main文件中的全局变量--按键用的变量
extern std::atomic<ButtonState> buttonState_Poweroff;
extern std::chrono::steady_clock::time_point pressStartTime;
extern int improve_dB; // dB单位
extern float improve_gain; // 线性单位
extern std::mutex gpio_mutex;  // 保护共享资源
// ASC的RKNN用的变量
extern DeepCMP deepcmp; // 初始化模型
extern std::vector<std::vector<float>> mel_filter_bank; // MEL滤波器组
extern std::vector<std::vector<float>> mel_spectrogram; // 得到的中间MEL谱参数
extern std::vector<float> Input_RKNN; // 输入1s的数据
extern std::atomic<size_t> current_write_pos; // 当前写入的位置
extern std::atomic<int> Is_RKNN_Flag; // 是否可以/正在进行RKNN模型推理，0--没有，此时可以在主程序装载数据,1--正在，主程序不装载数据
extern int Env_Class; // 声场类型0--干净语音,1--音乐,2--噪声,3--含噪语音
extern std::atomic<int> Env_Class_Global; // 声场类型0--干净语音,1--音乐,2--噪声,3--含噪语音


#endif // GLOBALS_H